home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 98 / Skunkware 98.iso / src / interp / perl5.005.tar.gz / perl5.005.tar / perl5.005 / XSlock.h < prev    next >
C/C++ Source or Header  |  1998-07-21  |  612b  |  36 lines

  1. #ifndef __XSlock_h__
  2. #define __XSlock_h__
  3.  
  4. class XSLockManager
  5. {
  6. public:
  7.     XSLockManager() { InitializeCriticalSection(&cs); };
  8.     ~XSLockManager() { DeleteCriticalSection(&cs); };
  9.     void Enter(void) { EnterCriticalSection(&cs); };
  10.     void Leave(void) { LeaveCriticalSection(&cs); };
  11. protected:
  12.     CRITICAL_SECTION cs;
  13. };
  14.  
  15. XSLockManager g_XSLock;
  16.  
  17. class XSLock
  18. {
  19. public:
  20.     XSLock() { g_XSLock.Enter(); };
  21.     ~XSLock() { g_XSLock.Leave(); };
  22. };
  23.  
  24. CPerlObj* pPerl;
  25.  
  26. #undef dXSARGS
  27. #define dXSARGS    \
  28.     dSP; dMARK;        \
  29.     I32 ax = mark - PL_stack_base + 1;    \
  30.     I32 items = sp - mark; \
  31.     XSLock localLock; \
  32.     ::pPerl = pPerl
  33.  
  34.  
  35. #endif
  36.